Interactive visualization
출처: Do it! 쉽게 배우는 R 데이터 분석
Github Code: Jun4871 Github
R을 활용하여 ’반응형 시각화 자료’를 표현해보고자 한다.
대한민국 시도별 지도 데이터 만들기
1) 패키지 준비 및 라이브러리 활성화
## Loading required package: maps
## Loading required package: usethis
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
2) 대한민국 시도별 인구 데이터 준비
‘kormaps2014’ 패키지에는 몇 가지 종류의 지역별 인구통계 데이터가 들어 있다. 이 중 시도별 인구통계가 담겨 있는 korpop1 데이터를 이용해 시도별 인구 단계 구분도를 만들어보자. 컬럼 명이 한글로 되어 있으면 오류가 발생할 수 있으니 영문자로 수정하도록 하자.
## 'data.frame': 8831 obs. of 15 variables:
## $ id : chr "0" "0" "0" "0" ...
## $ long : chr "137.774352627938" "137.779270931415" "137.780545929866" "137.814504843261" ...
## $ lat : chr "50.6883045072662" "50.6899249663447" "50.6900586920365" "50.6937941360883" ...
## $ order : chr "1" "2" "3" "4" ...
## $ hole : chr "FALSE" "FALSE" "FALSE" "FALSE" ...
## $ piece : chr "1" "1" "1" "1" ...
## $ group : chr "0.1" "0.1" "0.1" "0.1" ...
## $ SP_ID : chr "0" "0" "0" "0" ...
## $ SIDO_CD : chr "11" "11" "11" "11" ...
## $ SIDO_NM : chr NA NA NA NA ...
## $ BASE_YEAR: chr "2014" "2014" "2014" "2014" ...
## $ name : chr "\xbc\xad\xbf\xefƯ\xba\xb0\xbd\xc3" "\xbc\xad\xbf\xefƯ\xba\xb0\xbd\xc3" "\xbc\xad\xbf\xefƯ\xba\xb0\xbd\xc3" "\xbc\xad\xbf\xefƯ\xba\xb0\xbd\xc3" ...
## $ name1 : chr NA NA NA NA ...
## $ region : chr "11" "11" "11" "11" ...
## $ code : chr "11" "11" "11" "11" ...
3) 단계 구분도 만들기
korpop1 데이터의 시도별 인구 변수와 kormap1의 시도별 위경도 데이터를 이용해 단계 구분도를 만들도록하자. 지역 기준이 되는 code 변수가 숫자 코드로 되어 있기 때문에 지도에 마우스 커서를 올리면 코드가 표시된다. 코드 대신 지역명이 표시되도록 tooltip에 지역명 변수 name을 지정하겠다. 코드를 실행하면 뷰어 창에 단계 구분도가 생성된다. 그리고 그 위에 마우스 커서를 올리면 해당 지역의 인구가 표시된다.
4) 대한민국 시도별 결핵 환자 수 단계 구분도 만들기
‘kormaps2014’ 패키지에는 지역별 결핵 환자 수에 대한 정보를 담고 있는 tbc 데이터가 있다. 이번에는 tbc 데이터의 NewPts(결핵 환자 수) 변수를 이용해 시도별 결핵 환자 수 단계 구분도를 만들어 보자.
## 'data.frame': 255 obs. of 5 variables:
## $ name1 : chr "\xb0\xad\xbf\xf8" "\xb0\xe6\xb1\xe2" "\xb0泲" "\xb0\xe6\xba\xcf" ...
## $ code : chr "32" "31" "38" "37" ...
## $ name : chr "\xb0\xad\xbf\xf8\xb5\xb5" "\xb0\xe6\xb1\u2d75" "\xb0\xe6\xbb\xb5" "\xb0\xe6\xbb\xf3\xbaϵ\xb5" ...
## $ year : chr "2001" "2001" "2001" "2001" ...
## $ NewPts: chr "1396" "4843" "1749" "2075" ...
Interractive Graph 만들기
인터렉티브 그래프란, 마우스 움직임에 반응하며 실시간으로 형태가 변하는 그래프를 의미한다. 인터렉티브 그래프를 만들면 그래프를 자유롭게 조작하면서 관심 있는 부분을 자세히 살펴볼 수 있다. 그래프를 HTML 포맷으로 저장하면, 일반 사용자들도 웹 브라우저를 이용해 그래프를 조작할 수 있다.
1) 라이브러리 활성화
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
2) 시각화
생성된 그래프에 표현된 변수에 마우스를 올리면 값이 나타난다. 마우스를 드래그하여 특정부분을 확대할 수 있고 더블클릭으로 초기화면으로 돌아올 수 있다. HTML로 저장하여 R을 사용하지 않는 사람들도 해당 그래프를 열어볼 수 있게 할 수 있다.
3) Interactive 막대 그래프 시각화
시계열 Interactive Graph 만들기
데이터의 변화를 표현한 인터랙티브 시계열 그래프를 만들어 보자. 인터랙티즈 시계열 그래프를 이용하면 마우스로 시간 축을 움직이면서 시간에 따라 데이터가 어떻게 변하는지 자세히 살펴볼 수 있다. ggplot 패키지에 내장된 econmics 데이터를 활용해 그래프를 그려볼 것이다.
1) 라이브러리 활성화
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
2) 데이터 준비
‘dygraphs’ 패키지를 이용해 인터랙티브 시계열 그래프를 만드려면 데이터가 시간 순서 속성을 지니는 xts 데이터타입으로 되어 있어야 한다. 그렇기 때문에 econmics의 unmploy를 xts로 변환해주자.
## # A tibble: 6 x 6
## date pce pop psavert uempmed unemploy
## <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1967-07-01 507. 198712 12.6 4.5 2944
## 2 1967-08-01 510. 198911 12.6 4.7 2945
## 3 1967-09-01 516. 199113 11.9 4.6 2958
## 4 1967-10-01 512. 199311 12.9 4.9 3143
## 5 1967-11-01 517. 199498 12.8 4.7 3066
## 6 1967-12-01 525. 199657 11.8 4.8 3018
## [,1]
## 1967-07-01 2944
## 1967-08-01 2945
## 1967-09-01 2958
## 1967-10-01 3143
## 1967-11-01 3066
## 1967-12-01 3018
3) 인터렉티브 시계열 그래프
이제 dygraphs 패키지를 활용해 인터랙티브 시계열 그래프를 만들어 보자. 앞에서 생성한 eco를 dygraph()에 적용하면 뷰어 창에 인터랙티브 시계열 그래프가 생성된다. 선 위에 마우스 커서를 올리면 그래프 오른쪽 위에 날짜와 실업자 수가 표시된다. dygraph() 에 %>% 를 이용해 dyRangeSelector()를 추가하면 그래프 아래에 날짜 범위 선택 기능이 추가된다. 버튼을 움직여 특정 기간만 선택할 수 있고, 범위를 정한 뒤 좌우로 움직이면 시간에 따라 데이터가 어떻게 변하는지 알 수 있다.
4) 여러 값 표현하기
인터렉티브 시계열 그래프에 여러 값을 동시에 표현할 수 있다. econimics 데이터의 unemploy와 psavert를 그래프에 함께 표현해 보도록하자. 먼저 unemploy 변수와 psavert 변수를 xts 타입으로 바꾸고 unemploy 변수는 값이 1,000명 단위로 되어 있는데, psavert와 비교해 보기 쉽도록 1,000으로 나눠 100만 명단위로 수정했다.
5) 데이터 결합
## psavert unemploy
## 1967-07-01 12.6 2.944
## 1967-08-01 12.6 2.945
## 1967-09-01 11.9 2.958
## 1967-10-01 12.9 3.143
## 1967-11-01 12.8 3.066
## 1967-12-01 11.8 3.018